package com.atguigu.gulimall.order.vo;

import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * ━━━━━━神兽出没━━━━━━
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　　┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　　　　　┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛Code is far away from bug with the animal protecting
 * 　　　　┃　　　┃    神兽保佑,代码无bug
 * 　　　　┃　　　┃
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * <p>
 *     订单确认页需要用到的数据
 * ━━━━━━感觉萌萌哒━━━━━━
 */
public class OrderConfirmVo {
    //收货地址 ums_member_receive_address
    List<MemberAddressVo> addressVos;

    //选中的购物项目
    List<OrderItemVo> itemVos;
    // todo 发票信息

    //优惠券信息
    Integer integration;

    //订单总额
    BigDecimal total;

    //应付价格
    BigDecimal payPrice;

    //商品件数
    Integer count;

    //todo 防重令牌
    @Setter@Getter
    String orderToken;

    @Getter@Setter
    Map<Long,Boolean> stocks;



    public Integer getCount(){
        Integer i = 0;
        if (itemVos != null) {
            for(OrderItemVo itemVo:itemVos){
                i += itemVo.getCount();
            }
        }
        return  i;
    }


    public List<MemberAddressVo> getAddressVos() {
        return addressVos;
    }

    public void setAddressVos(List<MemberAddressVo> addressVos) {
        this.addressVos = addressVos;
    }

    public List<OrderItemVo> getItemVos() {
        return itemVos;
    }

    public void setItemVos(List<OrderItemVo> itemVos) {
        this.itemVos = itemVos;
    }

    public Integer getIntegration() {
        return integration;
    }

    public void setIntegration(Integer integration) {
        this.integration = integration;
    }

    public BigDecimal getTotal() {
        BigDecimal totalSum = new BigDecimal("0");
        if (itemVos != null) {
            for(OrderItemVo itemVo:itemVos){
                BigDecimal multiResult = itemVo.getPrice().multiply(new BigDecimal(itemVo.getCount().toString()));
                totalSum = totalSum.add(multiResult);
            }
        }
        return totalSum;
    }

    public BigDecimal getPayPrice() {
        BigDecimal totalSum = new BigDecimal("0");
        if (itemVos != null) {
            for(OrderItemVo itemVo:itemVos){
                BigDecimal multiResult = itemVo.getPrice().multiply(new BigDecimal(itemVo.getCount().toString()));
                totalSum = totalSum.add(multiResult);
            }
        }
        return totalSum;
    }

}